/**
 * 
 */
package kr.co.insoft.core.service.driver.api;

import java.util.Collection;
import java.util.List;

import kr.co.insoft.driver.model.HardwareProfileModel;
import kr.co.insoft.driver.model.ImageModel;
import kr.co.insoft.driver.model.KeyPairModel;
import kr.co.insoft.driver.model.RegionModel;
import kr.co.insoft.driver.model.SecurityModel;
import kr.co.insoft.driver.model.ZoneModel;
import kr.co.insoft.framework.exceptions.ServiceException;

/**
 * @author skpark
 * 
 */
public interface DriverApiService {

	/**
	 * region 목록
	 * 
	 * @param venderid
	 * @param accessKey
	 * @param secretKey
	 * @return
	 * @throws ServiceException
	 */
	public Collection<? extends RegionModel> getRegionListByVender(
			String venderid, String accessKey, String secretKey)
			throws ServiceException;

	/**
	 * Zone 목록
	 * 
	 * @param venderid
	 * @param regionSeq
	 * @param accessKey
	 * @param secretKey
	 * @return
	 * @throws ServiceException
	 */
	public Collection<? extends ZoneModel> getZoneListByRegion(String venderid,
			String regionSeq, String accessKey, String secretKey)
			throws ServiceException;

	/**
	 * SecurityGroup 목록
	 * 
	 * @param venderid
	 * @param regionSeq
	 * @param accessKey
	 * @param secretKey
	 * @return
	 * @throws ServiceException
	 */
	public Collection<? extends SecurityModel> getSecurityGroupListByRegion(
			String venderid, String regionSeq, String accessKey,
			String secretKey) throws ServiceException;

	/**
	 * SecurityGroup detail
	 * 
	 * @param venderid
	 * @param regionSeq
	 * @param securityGroupid
	 * @param accessKey
	 * @param secretKey
	 * @return
	 * @throws ServiceException
	 */
	public List<?> getSecurityGroup(String venderid, String regionSeq,
			String securityGroupid, String accessKey, String secretKey)
			throws ServiceException;

	/**
	 * KeyPair 정보
	 * 
	 * @param venderid
	 * @param regionSeq
	 * @param accessKey
	 * @param secretKey
	 * @return
	 * @throws ServiceException
	 */
	public Collection<? extends KeyPairModel> getKeyPairListByRegion(
			String venderid, String regionSeq, String accessKey,
			String secretKey) throws ServiceException;

	/**
	 * 해당 connection에 image 정보를 반환한다.
	 * 
	 * @param connectionid
	 * @return
	 * @throws ServiceException
	 */
	public Collection<? extends ImageModel> getMyImages(String connectionid)
			throws ServiceException;

	/**
	 * 해당 Connection에 hardware profile을 반환한다.
	 * 
	 * @param connectionid
	 * @return
	 * @throws ServiceException
	 */
	public Collection<? extends HardwareProfileModel> getHardwareProfiles(
			String connectionid) throws ServiceException;
}
